package com.sky.mapper;

import com.sky.entity.ShoppingCart;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface ShoppingCartMapper {
    //参数替换：MyBatis会自动将 #{} 包围的表达式替换为预处理语句中的占位符（通常是 ?）。在执行SQL语句之前，
    // MyBatis会根据参数名称（这里是 number 和 id）从传递给SQL语句的对象中提取相应的属性值，并将这些值绑定到预处理语句的占位符上。
    //防止SQL注入：使用 #{} 可以有效防止SQL注入攻击，因为MyBatis会为这些参数值进行适当的转义处理。
    //动态条件查询
    List<ShoppingCart> list(ShoppingCart shoppingCart);

    //根据id修改商品数量
    @Update("update shopping_cart set number =#{number} where id =#{id}")
     void updateNumberById(ShoppingCart shoppingCart);

    //插入购物车数据
//    @Insert("insert into shopping_cart (name,user_id,dish_id,setmeal_id,dish_flavor,number,amount,image,create_time) values " +
//            "(#{name},#{userId},#{dishId},#{setmealId},#{dishFlavor},#{number},#{amount},#{image},#{createTime})")
//    void insert(ShoppingCart shoppingCart);
    @Insert("insert into shopping_cart (name, user_id, dish_id, setmeal_id, dish_flavor, number, amount, image, create_time) " +
            " values (#{name},#{userId},#{dishId},#{setmealId},#{dishFlavor},#{number},#{amount},#{image},#{createTime})")
    void insert(ShoppingCart shoppingCart);

    //根据用户id删除购物车
    @Delete("delete from shopping_cart where user_id=#{userId}")
    void deleteByUserId(Long userId);

    /**
     * 批量插入购物车数据
     *
     * @param shoppingCartList
     */
    void insertBatch(List<ShoppingCart> shoppingCartList);
}


























